<html>
<head><meta charset="utf-8"><title>Drop official support for Windows XP compiler-team#378 · t-compiler/major changes · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/index.html">t-compiler/major changes</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html">Drop official support for Windows XP compiler-team#378</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="214758573"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214758573" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> triagebot <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214758573">(Oct 27 2020 at 20:20)</a>:</h4>
<p>A new proposal has been announced: <a href="https://github.com/rust-lang/compiler-team/issues/378">Drop official support for Windows XP #378</a>. It will be announced at the next meeting to try and draw attention to it, but usually MCPs are not discussed during triage meetings. If you think this would benefit from discussion amongst the team, consider proposing a design meeting.</p>



<a name="214762008"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214762008" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Chris Denton <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214762008">(Oct 27 2020 at 20:46)</a>:</h4>
<p>I've been informed that T-infra and T-release should also be made aware of this proposal but I'm not sure how to do that.</p>



<a name="214774821"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214774821" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cuviper <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214774821">(Oct 27 2020 at 22:53)</a>:</h4>
<p>I guess we can tag the groups, <span class="user-group-mention" data-user-group-id="2943">@T-infra</span> and <span class="user-group-mention" data-user-group-id="2907">@T-release</span></p>



<a name="214774977"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214774977" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Arlie Davis <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214774977">(Oct 27 2020 at 22:55)</a>:</h4>
<p>From Microsoft's perspective, we're fairly eager to see XP (and even Vista) support dropped. Establishing Win7 as the baseline for Tier 1 is reasonable, because it is still widely used, and because much of the runtime support that is needed for modern platforms is present in Win7. Such as much better concurrency primitives, etc.</p>



<a name="214775627"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214775627" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214775627">(Oct 27 2020 at 23:03)</a>:</h4>
<p><span class="user-mention" data-user-id="274471">@Arlie Davis</span> can you say more about "eager"? Is there some reason beyond simplifying code and ease of maintenance to do so? (Mostly just curious)</p>



<a name="214775738"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214775738" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214775738">(Oct 27 2020 at 23:04)</a>:</h4>
<p>+1 to dropping XP from the regular Windows targets if it simplifies things</p>



<a name="214775911"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214775911" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Arlie Davis <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214775911">(Oct 27 2020 at 23:06)</a>:</h4>
<p>Ease of maintenance / servicing is 100% of it. If the WinXP exists, it should work. That means supporting VMs for CI pipelines, possibly shipping hotfixes for it, etc.  None of which we want to do, because XP is well past its support lifetime.</p>
<p>So if it isn't tested and supported, it shouldn't exist. Because if it does exist, someone will use it, and then we'll be in the awful position of someone relying on something that has no support plan.</p>



<a name="214776052"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214776052" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Arlie Davis <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214776052">(Oct 27 2020 at 23:08)</a>:</h4>
<p>Also, we pay a cost on current platforms for this. The dynamic branches, GetProcAddress, etc. calls have a real cost, for doing the delayed import binding. We would like to see those removed, and replaced with direct calls to these APIs.</p>
<p>Just a few days ago, I was debugging a lab failure for Rust code running on Windows. The root cause was that the variant of Windows being tested in the lab does not have a <code>kernel32.dll</code>. That code lives in <code>kernelbase.dll</code>, and <code>kernel32.dll</code> is only the legacy name for it. But because the Rust compatibility code in <a href="http://compat.rs">compat.rs</a> has a hardcoded string of "kernel32.dll" in it, that code failed in the lab.  I would like those kind of dynamic failure modes removed entirely, when possible.</p>



<a name="214804936"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214804936" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214804936">(Oct 28 2020 at 08:05)</a>:</h4>
<p>The target tier policy RFC has a process for this.</p>



<a name="214804956"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214804956" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214804956">(Oct 28 2020 at 08:05)</a>:</h4>
<div class="codehilite"><pre><span></span><code>Note that in some cases, based on the usage of existing targets within the
    Rust community, Rust developers or a target&#39;s maintainers may wish to
    modify the baseline expectations of a target, or split an existing target
    into multiple targets with different baseline expectations. A proposal to
    do so will be treated similarly to the analogous promotion, demotion, or
    removal of a target, according to this policy, with the same team approvals
    required.
    - For instance, if an OS version has become obsolete and unsupported, a
      target for that OS may raise its baseline expectations for OS version
      (treated as though removing a target corresponding to the older
      versions), or a target for that OS may split out support for older OS
      versions into a lower-tier target (treated as though demoting a target
      corresponding to the older versions, and requiring justification for a
      new target at a lower tier for the older OS versions).
</code></pre></div>



<a name="214805077"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214805077" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214805077">(Oct 28 2020 at 08:07)</a>:</h4>
<p>Effectively, dropping support for XP would be equivalent to splitting the target and dropping one of the resulting targets.</p>



<a name="214805521"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214805521" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Chris Denton <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214805521">(Oct 28 2020 at 08:13)</a>:</h4>
<p>Aye this was shown to me but it was unclear to me what "dropping one of the resulting targets means". The policy says the process for dropping a tier 3 target involves creating a PR to remove it:</p>
<blockquote>
<p>If a tier 3 target stops meeting these requirements, or the target maintainers no longer have interest or time, or the target shows no signs of activity and has not built for some time, or removing the target would improve the quality of the Rust codebase, we may post a PR to remove it; any such PR will be CCed to the target maintainers (and potentially other people who have previously worked on the target), to check potential interest in improving the situation.</p>
</blockquote>
<p>But untangling the XP workarounds and compatibility layer is a major job that probably shouldn't be done in one PR. And certainly would be a lot of work to do before the fate of XP was even decided. So an MCP was suggested to me.</p>



<a name="214847607"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214847607" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214847607">(Oct 28 2020 at 14:56)</a>:</h4>
<p>I would like to see this move forward. Should we FCP this with the <code>T-compiler</code>, <code>T-infra</code> and <code>T-release</code> teams instead of using the "second" process?</p>



<a name="214848761"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214848761" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214848761">(Oct 28 2020 at 15:04)</a>:</h4>
<p>I think that's the right step.</p>



<a name="214851331"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214851331" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214851331">(Oct 28 2020 at 15:20)</a>:</h4>
<p>Will <code>rustbot fcp merge</code> do the right thing in the <code>compiler-team</code> repo if I create the <code>T-infra</code> and <code>T-release</code> labels?</p>



<a name="214859872"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214859872" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Arlie Davis <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214859872">(Oct 28 2020 at 16:13)</a>:</h4>
<p>Related to this process, we (Microsoft) want to raise the possibility of creating separate Rust target triples for Win10 vs. downlevel. Win10 has different API stability guarantees ("evergreen", generally), but there are necessary differences between Win10 and { Win7, Win8.x }. Many of those differences are not relevant to libcore or libstd, and so are likely irrelevant. However, concurrency control, NUMA, and runtime security features (like Control Flow Guard) will have an impact on libcore / libstd.</p>
<p>Being able to represent these differences as targets makes a lot of sense. We can get the advantages of Win10, while still supporting downlevel operating systems. And it fits fairly naturally within Rust's tooling.</p>
<p>I'm not asking to conflate that with deprecating and removing WinXP support. However, I am curious to know what the community opinion is, and how to advance this process, if there is rough consensus that it's desirable. I've never pushed any change through the Rust RFC / MCP process.</p>



<a name="214863648"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214863648" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Chris Denton <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214863648">(Oct 28 2020 at 16:39)</a>:</h4>
<p><span class="user-mention" data-user-id="274471">@Arlie Davis</span>  This has been desired in one form or another for awhile. For example, there was pre-RFC for  <a href="#narrow/stream/242869-t-compiler.2Fwindows/topic/%28Pre-RFC.3F%29.20target-api.2Fos-version/near/200581751">target_api_version</a>. This would be a compile time configuration option rather than new targets (I'm not sure what the pro/cons of this are). But I don't think it's been formally put forward yet. There are other ideas floating around but I'm not aware of anything that's concrete.</p>
<p>I think the normal procedure is to start with posting ideas to <a href="https://internals.rust-lang.org/">https://internals.rust-lang.org/</a> and asking for general feedback and where to go next.</p>
<p>As you say, I am nervous about conflating this with Windows XP support. My nightmare is that talk of dropping XP yet again ends up fizzling out without anything being decided. Whatever happens with future targets, I think dropping XP support is worthwhile, at least until someone steps up to maintain it. And even in that case I think it should be separate from official Windows support so that Tier 1 targets aren't having to tip toe around a Tier 3 target.</p>



<a name="214863794"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214863794" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214863794">(Oct 28 2020 at 16:40)</a>:</h4>
<p><span class="user-mention silent" data-user-id="125250">Wesley Wiser</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378/near/214851331">said</a>:</p>
<blockquote>
<p>Will <code>rustbot fcp merge</code> do the right thing in the <code>compiler-team</code> repo if I create the <code>T-infra</code> and <code>T-release</code> labels?</p>
</blockquote>
<p>I expect it to, yeah</p>



<a name="214863821"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214863821" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214863821">(Oct 28 2020 at 16:40)</a>:</h4>
<p>You need to also tag with T-compiler</p>



<a name="214864666"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214864666" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Arlie Davis <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214864666">(Oct 28 2020 at 16:46)</a>:</h4>
<p><span class="user-mention" data-user-id="260325">@Chris Denton</span>  Agreed on all. Let's get the Tier 1 platform raised to Win7, then remove the use of late-binding in <code>std</code> in a separate PR, and call it a day, on this front. It sounds like there's consensus on just this part, although we certainly need to get buy-in from more of the community. Then, separately, deal with target SDK levels or whatever we want to call them.</p>



<a name="214865197"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214865197" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214865197">(Oct 28 2020 at 16:50)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> Thanks! That worked.</p>



<a name="214884463"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214884463" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Mara <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214884463">(Oct 28 2020 at 19:12)</a>:</h4>
<p><span class="user-mention silent" data-user-id="274471">Arlie Davis</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378/near/214864666">said</a>:</p>
<blockquote>
<p>Let's get the Tier 1 platform raised to Win7, then remove the use of late-binding in <code>std</code></p>
</blockquote>
<p>There's also some Windows 8+ APIs that std doesn't use right now, but might be used in the future for optimized synchronization primitives (like those of parking_lot): <code>WaitOnAddress</code> and <code>WakeByAddress*</code>. So those would still need late binding. (Or there needs to be a separate target for Win8+.)</p>



<a name="214926110"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214926110" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Arlie Davis <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214926110">(Oct 29 2020 at 04:42)</a>:</h4>
<p><span class="user-mention" data-user-id="310399">@Mara</span> Certainly, agreed. My own preference would be that Rust would have two targets for Windows: "Downlevel" and "Win10". Win10 would be able to use APIs like WaitOnAddress directly, without late-binding, while Downlevel would be at the opposite end of the spectrum. Downlevel would run on Win7 or anything later, using late-binding where necessary.</p>



<a name="214926208"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214926208" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Arlie Davis <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214926208">(Oct 29 2020 at 04:45)</a>:</h4>
<p>There's also another, somewhat-related issue, which is moving Rust to use the "Universal CRT", rather than the "Legacy CRT", on Windows. The Universal CRT has a lot of advantages for portability and serviceability. My team handles Windows' requirements for the UCRT for C/C++, and I'm looking into what the best relationship is between Rust and the UCRT.</p>
<p>It's fairly clear that, if we do have a Win10 Rust target, that having it target the UCRT is probably the best thing to do. It also _might_ be the best thing for Downlevel, but I'm not certain of that yet.</p>



<a name="214933017"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/214933017" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Peter Rabbit <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#214933017">(Oct 29 2020 at 07:22)</a>:</h4>
<p>I certainly would love to see more progress towards <code>target_api_version</code>, and then we can provide a full depth of targets instead of just Win10 vs Win7.</p>



<a name="215114384"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/215114384" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#215114384">(Oct 30 2020 at 15:59)</a>:</h4>
<p><span class="user-mention" data-user-id="274471">@Arlie Davis</span> I would love to see Rust using the UCRT.</p>



<a name="215114587"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/215114587" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#215114587">(Oct 30 2020 at 16:00)</a>:</h4>
<p><span class="user-mention" data-user-id="274471">@Arlie Davis</span> As a step towards several of these improvements, might your team have time to work on the implementation for raw-dylib?</p>



<a name="215114605"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/215114605" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#215114605">(Oct 30 2020 at 16:00)</a>:</h4>
<p>Doesn't windows-msvc target already use UCRT?</p>



<a name="215114691"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/215114691" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#215114691">(Oct 30 2020 at 16:01)</a>:</h4>
<p><span class="user-mention" data-user-id="274471">@Arlie Davis</span> <a href="https://github.com/rust-lang/rust/issues/58713">https://github.com/rust-lang/rust/issues/58713</a></p>



<a name="215157632"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/215157632" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Arlie Davis <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#215157632">(Oct 30 2020 at 22:22)</a>:</h4>
<p>At Microsoft, we have to deal with a _lot_ of different components, and some of them do not have the option of using the UCRT. I want to make sure that Rust can still be used when linked into those components. It ain't much, but it's honest work.</p>



<a name="215157680"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/215157680" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Arlie Davis <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#215157680">(Oct 30 2020 at 22:23)</a>:</h4>
<p><span class="user-mention" data-user-id="239881">@Josh Triplett</span> About raw-dylib, could you tell me a bit more about what the issue it?  It sounds like the kind of work that my team should definitely at least understand, and quite possibly sign up to do.</p>



<a name="215158171"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/215158171" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Diggsey <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#215158171">(Oct 30 2020 at 22:29)</a>:</h4>
<p><span class="user-mention" data-user-id="274471">@Arlie Davis</span> The <a href="https://github.com/rust-lang/rfcs/blob/master/text/2627-raw-dylib-kind.md">RFC</a> linked from the issue should have all the information</p>



<a name="215158652"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/215158652" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Arlie Davis <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#215158652">(Oct 30 2020 at 22:35)</a>:</h4>
<p>Great, thanks.</p>



<a name="215175894"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/215175894" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#215175894">(Oct 31 2020 at 05:41)</a>:</h4>
<p><span class="user-mention" data-user-id="274471">@Arlie Davis</span> And the primary reason you might care in this particular context is that it would allow Rust to link to any Windows library without needing an import library.</p>



<a name="215175938"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/215175938" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#215175938">(Oct 31 2020 at 05:42)</a>:</h4>
<p>Which would make it easier and more reliable to link to ucrt or any other Windows library whether the toolchain ships it or not.</p>



<a name="215192538"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/215192538" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Peter Rabbit <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#215192538">(Oct 31 2020 at 13:46)</a>:</h4>
<p><span class="user-mention silent" data-user-id="119581">mati865</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378/near/215114605">said</a>:</p>
<blockquote>
<p>Doesn't windows-msvc target already use UCRT?</p>
</blockquote>
<p>I too am wondering about this. When we link to the CRT currently, we link to <code>msvcrt.lib</code> or <code>libcmt.lib</code> both of which will effectively link to the UCRT given a new enough VC++ and Windows SDK. <span class="user-mention" data-user-id="274471">@Arlie Davis</span> Is there something different that you mean by linking to the UCRT?</p>



<a name="215217359"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/215217359" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Arlie Davis <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#215217359">(Oct 31 2020 at 23:46)</a>:</h4>
<p>Right, that's how Rust, as it ships now, links against the UCRT. In my case, I just need to have adequate control over precisely which version of the CRT is used, because I deal with components that either must link to the UCRT, or must _not_ link to the UCRT, due to existing constraints on those components. Long story short, my team is working on how best to enable Rust for Windows components, so we have to deal with all of the many permutations of build options that Windows components use.</p>
<p>In many cases, there's nothing that needs to be done in Rust to support this, since generally we invoke rustc.exe directly, and do not use it for linking. We run all of our binaries through the MSVC linker, and we control everything that we pass to it. And thankfully, libstd's dependencies on the CRT are fairly minimal.</p>



<a name="215389869"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/215389869" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Luqman Aden <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#215389869">(Nov 02 2020 at 22:48)</a>:</h4>
<p><span class="user-mention silent" data-user-id="239881">Josh Triplett</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378/near/215114587">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="274471">Arlie Davis</span> As a step towards several of these improvements, might your team have time to work on the implementation for raw-dylib?</p>
</blockquote>
<p>re the raw-dylib work there was a <a href="#narrow/stream/242869-t-compiler.2Fwindows/topic/Tracking.20raw_dylib.20progress.2E">zulip thread</a> about some initial work but looks like it has stalled</p>



<a name="222848358"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/222848358" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#222848358">(Jan 15 2021 at 11:58)</a>:</h4>
<p>Hey all, do we know when the MCP will be merged and we can start removing XP support from the std lib? <a href="https://github.com/rust-lang/compiler-team/issues/378">https://github.com/rust-lang/compiler-team/issues/378</a></p>



<a name="222850652"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/222850652" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#222850652">(Jan 15 2021 at 12:27)</a>:</h4>
<p>Looks like this was just an oversight. I'll mark it accepted and close it now.</p>



<a name="222850717"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/Drop%20official%20support%20for%20Windows%20XP%20compiler-team%23378/near/222850717" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> triagebot <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/Drop.20official.20support.20for.20Windows.20XP.20compiler-team.23378.html#222850717">(Jan 15 2021 at 12:27)</a>:</h4>
<p>This proposal has been accepted: <a href="https://github.com/rust-lang/compiler-team/issues/378">#378</a>.</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>